begintownscript;

variables;
short bmessage,rctx,rcty,talk,pcs,seated,turn_no,brig_loc,advance_on,brgok;
short mrnleft;
string custom_m;

body;

beginstate INIT_STATE;
	turn_off_training(1);

	force_view_center(1,1);
	force_instant_terrain_redraw();
	pause(5);
	reset_dialog();
	if(party_size() == 1){
		add_dialog_str(0,"Well.  The boat ride seems to be going okay so far...  The vehicle's pretty fast, but at least it's not fast enough that I have to grab onto it to simply stay on.",0);
		add_dialog_str(1,"Plus, the thing seems to not care about where I sit, which is nifty.  It's very well-balanced.",0);
	}
	if(party_size() > 1){
		add_dialog_str(0,"Well.  The boat ride seems to be going okay so far...  The vehicle's pretty fast, but at least it's not fast enough that we have to grab onto it to simply stay on.",0);
		add_dialog_str(1,"Plus, the thing seems to not care about where we sit, which is nifty.  It's very well-balanced.",0);
	}
	add_dialog_str(2,"...wait a second.  Is that another boat?",0);
	add_dialog_choice(0,"Hey, Hoppston!  Brigands!");
	bmessage = run_dialog(1);
	pause(3);
	play_sound(100);
	play_sound(23);

	pcs = 0;
	seated = 0;
	while(pcs <= 3){
		if(char_ok(pcs) == TRUE){
			set_character_facing(pcs,6);
			if(seated == 0)
				relocate_character(pcs,21,31);
			if(seated == 1)
				relocate_character(pcs,21,33);
			if(seated == 2)
				relocate_character(pcs,20,31);
			if(seated == 3)
				relocate_character(pcs,20,33);
			seated = (seated + 1);
		}

		pcs = (pcs + 1);
	}
	force_view_center(21,31);
	force_instant_terrain_redraw();
	pause(10);
	turn_no = 80;
	brig_loc = 0;
	brgok = 1;
	advance_on = 1;

	message_dialog("Hoppston looks back and confirms what we just told him.  _Crap!  Yeah, you're right.  Those are brigands alright._","_You've got some time to prepare yourselves for the fight.  I'll see what I can do about outrunning them in the meantime._");

break;

beginstate EXIT_STATE;
break;

beginstate START_STATE;

	if(turn_no == 80){
		turn_no = 0;
		end();
	}

//	rctx = 8;
//	while(rctx <= 17){
//		rcty = 31;
//		while(rcty <= 33){
//			if(get_floor(rctx,rcty) == 158)
//				set_floor(rctx,rcty,73);
//			rcty = (rcty + 1);
//		}
//		rctx = (rctx + 1);
//	}

	// Moving Rocks Forward
	pcs = 14;
	while(pcs <= 50){
		if(char_ok(pcs) == TRUE){
			rctx = (char_loc_x(pcs) - 1);
			rcty = (char_loc_y(pcs));
			if(rctx == 7)
				erase_char(pcs);
			else
				relocate_character(pcs,rctx,rcty);
		}

		pcs = (pcs + 1);
	}

	// Brigands' Status Check
	if((brgok == 1) && (advance_on < 2)){
		rctx = 6;
		brgok = 0;
		while((rctx <= 13) && (brgok == 0)){
			if(char_ok(rctx) == TRUE)
				brgok = 1;
			rctx = (rctx + 1);
		}
		rctx = 52;
		while((rctx <= 56) && (brgok == 0)){
			if(char_ok(rctx) == TRUE)
				brgok = 1;
			rctx = (rctx + 1);
		}
		if((brgok == 0) && (advance_on < 2)){
			message_dialog("Well- with all of the brigands dead, the pilot appears to be pulling back.  Finally.","");
			advance_on = 2;
		}
	}

	if(turn_no == 6){
		advance_on = 1;
	}

	if((turn_no == 21) && (advance_on < 2)){
		if(party_size() == 1)
			message_dialog("Hoppston turns towards me.  _Hey, you!  I've got good news; Tenslayer is pulling ahead!  We should be rid of these brigads in no time._","_Anyway, they're probably retreating since we're getting close to Sunset Creek at this point.");
		if(party_size() > 1)
			message_dialog("Hoppston turns towards us.  _Hey, you guys!  I've got good news; Tenslayer is pulling ahead!  We should be rid of these brigads in no time._","");

		advance_on = 2;
		mrnleft = 0;
		if(char_ok(7) == TRUE){
			mrnleft = (mrnleft + 1);
			erase_char(7);
			print_str_color("Brigand Marine retreats.",2);
		}
		if(char_ok(12) == TRUE){
			mrnleft = (mrnleft + 1);
			erase_char(12);
			print_str_color("Brigand Marine retreats.",2);
		}
		if(char_ok(13) == TRUE){
			mrnleft = (mrnleft + 1);
			erase_char(13);
			print_str_color("Brigand Marine retreats.",2);
		}
		if(char_ok(52) == TRUE){
			mrnleft = (mrnleft + 1);
			erase_char(52);
			print_str_color("Brigand Marine retreats.",2);
		}
		if(char_ok(53) == TRUE){
			mrnleft = (mrnleft + 1);
			erase_char(53);
			print_str_color("Brigand Marine retreats.",2);
		}
		if(char_ok(54) == TRUE){
			mrnleft = (mrnleft + 1);
			erase_char(54);
			print_str_color("Brigand Marine retreats.",2);
		}
	}

	// ADVANCING
	if((brgok == 1) && (advance_on == 1) && (brig_loc < 7)){
		brig_loc = (brig_loc + 1);
		set_terrain((brig_loc + 7),29,469);
		set_terrain((brig_loc + 7),30,469);
		set_terrain((brig_loc + 7),34,469);
		set_terrain((brig_loc + 7),35,469);

		set_terrain((brig_loc + 6),30,0);
		set_terrain((brig_loc + 6),34,0);

		set_terrain((brig_loc + 3),30,228);
		set_terrain((brig_loc + 3),31,228);
		set_terrain((brig_loc + 3),32,275);
		set_terrain((brig_loc + 3),33,228);
		set_terrain((brig_loc + 3),34,228);

		set_terrain((brig_loc + 2),30,469);
		set_terrain((brig_loc + 2),31,469);
		set_terrain((brig_loc + 2),32,421);
		set_terrain((brig_loc + 2),33,469);
		set_terrain((brig_loc + 2),34,469);

		set_terrain((brig_loc + 1),29,0);
		set_terrain((brig_loc + 1),30,0);
		set_terrain((brig_loc + 1),32,469);
		set_terrain((brig_loc + 1),34,0);
		set_terrain((brig_loc + 1),35,0);

		set_terrain((brig_loc),31,337);
		set_terrain((brig_loc),32,337);
		set_terrain((brig_loc),33,337);

		set_terrain((brig_loc - 1),31,0);
		set_terrain((brig_loc - 1),32,0);
		set_terrain((brig_loc - 1),33,0);

		set_floor((brig_loc + 6),30,169);
		set_floor((brig_loc + 6),34,169);

		set_floor((brig_loc + 7),31,169);
		set_floor((brig_loc + 7),32,169);
		set_floor((brig_loc + 7),33,169);

		set_floor((brig_loc + 2),30,73);
		set_floor((brig_loc + 2),31,73);
		set_floor((brig_loc + 2),33,73);
		set_floor((brig_loc + 2),34,73);

		set_floor((brig_loc + 1),32,73);

		move_item_on_spot((brig_loc + 6),31,(brig_loc + 7),31);
		move_item_on_spot((brig_loc + 6),32,(brig_loc + 7),32);
		move_item_on_spot((brig_loc + 6),33,(brig_loc + 7),33);

		rctx = 6;
		while(rctx >= 3){
			rcty = 30;
			while(rcty <= 34){
				move_item_on_spot(((brig_loc + rctx) - 1),rcty,(brig_loc + rctx),rcty);

				rcty = (rcty + 1);
			}
			rctx = (rctx - 1);
		}

		put_stain_on_space((brig_loc + 6),31,-1);
		put_stain_on_space((brig_loc + 6),32,-1);
		put_stain_on_space((brig_loc + 6),33,-1);

		rctx = 3;
		while(rctx <= 6){
			rcty = 30;
			while(rcty <= 34){
				put_stain_on_space((brig_loc + rctx),rcty,-1);

				rcty = (rcty + 1);
			}
			rctx = (rctx + 1);
		}

		rctx = 6;
		while(rctx <= 13){
			if(char_ok(rctx) == TRUE){
				if((get_terrain((char_loc_x(rctx) + 1),char_loc_y(rctx)) == 0) && (get_floor((char_loc_x(rctx) + 1),char_loc_y(rctx)) == 169)){
relocate_character(rctx,(char_loc_x(rctx) + 1),char_loc_y(rctx));
				}
			}
			rctx = (rctx + 1);
		}
		rctx = 52;
		while(rctx <= 56){
			if(char_ok(rctx) == TRUE){
				if((get_terrain((char_loc_x(rctx) + 1),char_loc_y(rctx)) == 0) && (get_floor((char_loc_x(rctx) + 1),char_loc_y(rctx)) == 169)){
relocate_character(rctx,(char_loc_x(rctx) + 1),char_loc_y(rctx));
				}
			}
			rctx = (rctx + 1);
		}
	}

	// RETREATING
	if(((brgok == 0) || (advance_on == 2)) && (brig_loc > 0)){
		brig_loc = (brig_loc - 1);

		set_terrain((brig_loc + 8),29,0);
		set_terrain((brig_loc + 8),30,0);
		set_terrain((brig_loc + 8),34,0);
		set_terrain((brig_loc + 8),35,0);

		set_terrain((brig_loc + 7),30,469);
		set_terrain((brig_loc + 7),34,469);

		set_terrain((brig_loc + 4),30,0);
		set_terrain((brig_loc + 4),31,0);
		set_terrain((brig_loc + 4),32,0);
		set_terrain((brig_loc + 4),33,0);
		set_terrain((brig_loc + 4),34,0);

		set_terrain((brig_loc + 3),30,228);
		set_terrain((brig_loc + 3),31,228);
		set_terrain((brig_loc + 3),32,275);
		set_terrain((brig_loc + 3),33,228);
		set_terrain((brig_loc + 3),34,228);

		set_terrain((brig_loc + 2),29,469);
		set_terrain((brig_loc + 2),30,469);
		set_terrain((brig_loc + 2),32,421);
		set_terrain((brig_loc + 2),34,469);
		set_terrain((brig_loc + 2),35,469);

		set_terrain((brig_loc + 1),31,469);
		set_terrain((brig_loc + 1),32,469);
		set_terrain((brig_loc + 1),33,469);

		set_terrain((brig_loc),31,337);
		set_terrain((brig_loc),32,337);
		set_terrain((brig_loc),33,337);

		set_floor((brig_loc + 2),32,169);

		set_floor((brig_loc + 3),30,169);
		set_floor((brig_loc + 3),31,169);
		set_floor((brig_loc + 3),33,169);
		set_floor((brig_loc + 3),34,169);

		set_floor((brig_loc + 7),30,73);
		set_floor((brig_loc + 7),34,73);

		set_floor((brig_loc + 8),31,73);
		set_floor((brig_loc + 8),32,73);
		set_floor((brig_loc + 8),33,73);

		rctx = 3;
		while(rctx <= 6){
			rcty = 30;
			while(rcty <= 34){
				move_item_on_spot(((brig_loc + rctx) + 1),rcty,(brig_loc + rctx),rcty);

				rcty = (rcty + 1);
			}
			rctx = (rctx + 1);
		}

		move_item_on_spot((brig_loc + 8),31,(brig_loc + 7),31);
		move_item_on_spot((brig_loc + 8),32,(brig_loc + 7),32);
		move_item_on_spot((brig_loc + 8),33,(brig_loc + 7),33);

		put_stain_on_space((brig_loc + 6),31,-1);
		put_stain_on_space((brig_loc + 6),32,-1);
		put_stain_on_space((brig_loc + 6),33,-1);

		rctx = 3;
		while(rctx <= 6){
			rcty = 30;
			while(rcty <= 34){
				put_stain_on_space((brig_loc + rctx),rcty,-1);

				rcty = (rcty + 1);
			}
			rctx = (rctx + 1);
		}

		rctx = 6;
		while(rctx <= 13){
			if(char_ok(rctx) == TRUE){
				if((get_terrain((char_loc_x(rctx) - 1),char_loc_y(rctx)) == 0) && (get_floor((char_loc_x(rctx) - 1),char_loc_y(rctx)) == 169)){
relocate_character(rctx,(char_loc_x(rctx) - 1),char_loc_y(rctx));
				}
			}
			rctx = (rctx + 1);
		}
		rctx = 52;
		while(rctx <= 56){
			if(char_ok(rctx) == TRUE){
				if((get_terrain((char_loc_x(rctx) - 1),char_loc_y(rctx)) == 0) && (get_floor((char_loc_x(rctx) - 1),char_loc_y(rctx)) == 169)){
relocate_character(rctx,(char_loc_x(rctx) - 1),char_loc_y(rctx));
				}
			}
			rctx = (rctx + 1);
		}

		if(brig_loc == 0){
			message_dialog("_Okay.  We're getting pretty close to Sunset Creek now.  Hang on for just a little bit longer..._","Finally.");
			pcs = 0;
			while(char_ok(pcs) == FALSE){
				pcs = (pcs + 1);
			}
			rctx = char_loc_x(pcs);
			rcty = char_loc_y(pcs);
			while(rcty >= 10){
				force_view_center(rctx,rcty);
				force_instant_terrain_redraw();
				pause(1);

				rcty = (rcty - 1);
			}

			march_party(5,5);
			march_party(7,7);
			march_party(5,7);
			march_party(7,5);
			block_entry(1);
			advance_on = 3;
			message_dialog("Move in any direction to continue.","");
		}
	}

	turn_no = (turn_no + 1);

	force_instant_terrain_redraw();

	if(advance_on < 3)
		play_sound(85);

break;

beginstate 10;

	move_to_new_town(5,5,24);

break;

